技術文章
技術問答
My Project
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2026 iThome 鐵人賽
DAY
19
0
自我挑戰組
學習C#續
系列 第
19
篇
Day 19: 擴充方法(Extension Methods)與現代模式比對(Pattern Matching)
18th鐵人賽
413570622
2026-10-02 12:55:25
59 瀏覽
分享至
擴充方法(Extension Methods):
允許在不修改原始類別原始碼、不使用繼承的前提下,向既有型別(包含 .NET 內建型別或第三方類別庫)動態「外掛」新方法。
三大必備語法規則:
擴充方法必須定義在靜態類別(static class)中。
擴充方法本身必須宣告為靜態方法(static method)。
方法的第一個參數前必須加上 this 關鍵字,用以指定要擴充的目標型別(例如 this string str)。
呼叫時如同該物件自帶的實體方法,支援 IntelliSense 自動提示與方法鏈結(Method Chaining)。
現代模式比對(Pattern Matching):
switch 運算式(Switch Expressions):相比傳統 switch 陳述式,改用箭頭符號 => 且支援直接回傳值,預設情況以底線 _(Discard)代表 default。
型別比對(Type Pattern):檢查物件是否屬於指定型別,並於符合時宣告具型別變數(例如 case Circle c:)。
屬性比對(Property Pattern):直接在比對條件中使用 { 屬性名稱: 期待值 } 檢查物件屬性,免去繁瑣的 if (obj.Prop == ...) 寫法。
關係與條件比對(Relational & When Clause):結合 <, >, <=, >= 進行範圍判定,或使用 when 關鍵字加上附加篩選條件。
實作範例
留言
追蹤
檢舉
上一篇
Day 18:發行者/訂閱者模式(Publisher-Subscriber Pattern)
下一篇
Day 20:資源釋放與記憶體管理
系列文
學習C#續
共
29
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
25
Day 25: 控制台輕量資料庫:SQLite 與 EF Core
26
Day 26: 物件導向設計原則(SOLID)與控制台架構思維
27
Day 27: 單元測試實戰(Unit Testing)
28
Day 28: 綜合實作專案(一):Console 系統架構與選單設計
29
Day 29: 綜合實作專案(二):資料庫串接、LINQ 統計與非同步匯出
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
929
組
團體組數
32
組
累計文章數
19612
篇
完賽人數
317
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
17th鐵人賽
14th鐵人賽
18th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
熱門問題
我的出發點錯了嗎
excel 檔案損毀的情況
鎖住個人檔案
MAMP中mysql基礎設定更改後server not running
2026年-請益支援中文codeing 的地端LLM
熱門回答
我的出發點錯了嗎
excel 檔案損毀的情況
熱門文章
一個寫了8年的資料庫工具 – JasonQuery,現在正式開源
高層的痛點省思
APK 無法安裝?從解析錯誤到簽名衝突:7 個常見原因與實用解法
BitTorrent 种子下载与 Magnet 磁力下载
AI API網站怎麼選?從六種服務比較,到訂單資料擷取實測
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}